home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / cciss_ioctl.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  6KB  |  215 lines

  1. #ifndef CCISS_IOCTLH
  2. #define CCISS_IOCTLH
  3.  
  4. #include <linux/types.h>
  5. #include <linux/ioctl.h>
  6.  
  7. #define CCISS_IOC_MAGIC 'B'
  8.  
  9.  
  10. typedef struct _cciss_pci_info_struct
  11. {
  12.     unsigned char     bus;
  13.     unsigned char     dev_fn;
  14.     unsigned short    domain;
  15.     __u32         board_id;
  16. } cciss_pci_info_struct; 
  17.  
  18. typedef struct _cciss_coalint_struct
  19. {
  20.     __u32  delay;
  21.     __u32  count;
  22. } cciss_coalint_struct;
  23.  
  24. typedef char NodeName_type[16];
  25.  
  26. typedef __u32 Heartbeat_type;
  27.  
  28. #define CISS_PARSCSIU2     0x0001
  29. #define CISS_PARCSCIU3     0x0002
  30. #define CISS_FIBRE1G    0x0100
  31. #define CISS_FIBRE2G    0x0200
  32. typedef __u32 BusTypes_type;
  33.  
  34. typedef char FirmwareVer_type[4];
  35. typedef __u32 DriverVer_type;
  36.  
  37. #define MAX_KMALLOC_SIZE 128000
  38.  
  39. #ifndef CCISS_CMD_H
  40. // This defines are duplicated in cciss_cmd.h in the driver directory 
  41.  
  42. //general boundary defintions
  43. #define SENSEINFOBYTES          32//note that this value may vary between host implementations
  44.  
  45. //Command Status value
  46. #define CMD_SUCCESS             0x0000
  47. #define CMD_TARGET_STATUS       0x0001
  48. #define CMD_DATA_UNDERRUN       0x0002
  49. #define CMD_DATA_OVERRUN        0x0003
  50. #define CMD_INVALID             0x0004
  51. #define CMD_PROTOCOL_ERR        0x0005
  52. #define CMD_HARDWARE_ERR        0x0006
  53. #define CMD_CONNECTION_LOST     0x0007
  54. #define CMD_ABORTED             0x0008
  55. #define CMD_ABORT_FAILED        0x0009
  56. #define CMD_UNSOLICITED_ABORT   0x000A
  57. #define CMD_TIMEOUT             0x000B
  58. #define CMD_UNABORTABLE        0x000C
  59.  
  60. //transfer direction
  61. #define XFER_NONE               0x00
  62. #define XFER_WRITE              0x01
  63. #define XFER_READ               0x02
  64. #define XFER_RSVD               0x03
  65.  
  66. //task attribute
  67. #define ATTR_UNTAGGED           0x00
  68. #define ATTR_SIMPLE             0x04
  69. #define ATTR_HEADOFQUEUE        0x05
  70. #define ATTR_ORDERED            0x06
  71. #define ATTR_ACA                0x07
  72.  
  73. //cdb type
  74. #define TYPE_CMD                0x00
  75. #define TYPE_MSG                0x01
  76.  
  77. // Type defs used in the following structs
  78. #define BYTE __u8
  79. #define WORD __u16
  80. #define HWORD __u16
  81. #define DWORD __u32
  82.  
  83. #define CISS_MAX_LUN    1024
  84.  
  85. #define LEVEL2LUN   1   // index into Target(x) structure, due to byte swapping
  86. #define LEVEL3LUN   0
  87.  
  88. #pragma pack(1)
  89.  
  90. //Command List Structure
  91. typedef union _SCSI3Addr_struct {
  92.    struct {
  93.     BYTE Dev;
  94.     BYTE Bus:6;
  95.     BYTE Mode:2;        // b00
  96.   } PeripDev;
  97.    struct {
  98.     BYTE DevLSB;
  99.     BYTE DevMSB:6;
  100.     BYTE Mode:2;        // b01
  101.   } LogDev;
  102.    struct {
  103.     BYTE Dev:5;
  104.     BYTE Bus:3;
  105.     BYTE Targ:6;
  106.     BYTE Mode:2;        // b10
  107.   } LogUnit;
  108. } SCSI3Addr_struct;
  109.  
  110. typedef struct _PhysDevAddr_struct {
  111.   DWORD             TargetId:24;
  112.   DWORD             Bus:6;
  113.   DWORD             Mode:2;
  114.   SCSI3Addr_struct  Target[2]; //2 level target device addr
  115. } PhysDevAddr_struct;
  116.   
  117. typedef struct _LogDevAddr_struct {
  118.   DWORD            VolId:30;
  119.   DWORD            Mode:2;
  120.   BYTE             reserved[4];
  121. } LogDevAddr_struct;
  122.  
  123. typedef union _LUNAddr_struct {
  124.   BYTE               LunAddrBytes[8];
  125.   SCSI3Addr_struct   SCSI3Lun[4];
  126.   PhysDevAddr_struct PhysDev;
  127.   LogDevAddr_struct  LogDev;
  128. } LUNAddr_struct;
  129.  
  130. typedef struct _RequestBlock_struct {
  131.   BYTE   CDBLen;
  132.   struct {
  133.     BYTE Type:3;
  134.     BYTE Attribute:3;
  135.     BYTE Direction:2;
  136.   } Type;
  137.   HWORD  Timeout;
  138.   BYTE   CDB[16];
  139. } RequestBlock_struct;
  140.  
  141. typedef union _MoreErrInfo_struct{
  142.   struct {
  143.     BYTE  Reserved[3];
  144.     BYTE  Type;
  145.     DWORD ErrorInfo;
  146.   }Common_Info;
  147.   struct{
  148.     BYTE  Reserved[2];
  149.     BYTE  offense_size;//size of offending entry
  150.     BYTE  offense_num; //byte # of offense 0-base
  151.     DWORD offense_value;
  152.   }Invalid_Cmd;
  153. }MoreErrInfo_struct;
  154. typedef struct _ErrorInfo_struct {
  155.   BYTE               ScsiStatus;
  156.   BYTE               SenseLen;
  157.   HWORD              CommandStatus;
  158.   DWORD              ResidualCnt;
  159.   MoreErrInfo_struct MoreErrInfo;
  160.   BYTE               SenseInfo[SENSEINFOBYTES];
  161. } ErrorInfo_struct;
  162.  
  163. #pragma pack()
  164. #endif /* CCISS_CMD_H */ 
  165.  
  166. typedef struct _IOCTL_Command_struct {
  167.   LUNAddr_struct       LUN_info;
  168.   RequestBlock_struct      Request;
  169.   ErrorInfo_struct         error_info; 
  170.   WORD               buf_size;  /* size in bytes of the buf */
  171.   BYTE               *buf;
  172. } IOCTL_Command_struct;
  173.  
  174. typedef struct _BIG_IOCTL_Command_struct {
  175.   LUNAddr_struct       LUN_info;
  176.   RequestBlock_struct      Request;
  177.   ErrorInfo_struct         error_info;
  178.   DWORD               malloc_size; /* < MAX_KMALLOC_SIZE in cciss.c */
  179.   DWORD               buf_size;    /* size in bytes of the buf */
  180.                           /* < malloc_size * MAXSGENTRIES */
  181.   BYTE               *buf;
  182. } BIG_IOCTL_Command_struct;
  183.  
  184. typedef struct _LogvolInfo_struct{
  185.     __u32    LunID;
  186.     int    num_opens;  /* number of opens on the logical volume */
  187.     int    num_parts;  /* number of partitions configured on logvol */
  188. } LogvolInfo_struct;
  189.  
  190. #define CCISS_GETPCIINFO _IOR(CCISS_IOC_MAGIC, 1, cciss_pci_info_struct)
  191.  
  192. #define CCISS_GETINTINFO _IOR(CCISS_IOC_MAGIC, 2, cciss_coalint_struct)
  193. #define CCISS_SETINTINFO _IOW(CCISS_IOC_MAGIC, 3, cciss_coalint_struct)
  194.  
  195. #define CCISS_GETNODENAME _IOR(CCISS_IOC_MAGIC, 4, NodeName_type)
  196. #define CCISS_SETNODENAME _IOW(CCISS_IOC_MAGIC, 5, NodeName_type)
  197.  
  198. #define CCISS_GETHEARTBEAT _IOR(CCISS_IOC_MAGIC, 6, Heartbeat_type)
  199. #define CCISS_GETBUSTYPES  _IOR(CCISS_IOC_MAGIC, 7, BusTypes_type)
  200. #define CCISS_GETFIRMVER   _IOR(CCISS_IOC_MAGIC, 8, FirmwareVer_type)
  201. #define CCISS_GETDRIVVER   _IOR(CCISS_IOC_MAGIC, 9, DriverVer_type)
  202. #define CCISS_REVALIDVOLS  _IO(CCISS_IOC_MAGIC, 10)
  203. #define CCISS_PASSTHRU       _IOWR(CCISS_IOC_MAGIC, 11, IOCTL_Command_struct)
  204. #define CCISS_DEREGDISK       _IO(CCISS_IOC_MAGIC, 12)
  205.  
  206. /* no longer used... use REGNEWD instead */ 
  207. #define CCISS_REGNEWDISK  _IOW(CCISS_IOC_MAGIC, 13, int)
  208.  
  209. #define CCISS_REGNEWD       _IO(CCISS_IOC_MAGIC, 14)
  210. #define CCISS_RESCANDISK   _IO(CCISS_IOC_MAGIC, 16)
  211. #define CCISS_GETLUNINFO   _IOR(CCISS_IOC_MAGIC, 17, LogvolInfo_struct)
  212. #define CCISS_BIG_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 18, BIG_IOCTL_Command_struct)
  213.  
  214. #endif  
  215.